package cn.ecnu.paper.service;

import cn.ecnu.paper.vo.*;

import java.util.List;
import java.util.concurrent.ExecutionException;

public interface PaperService {


    int insertPaper(PaperFrontVo vo) throws ExecutionException, InterruptedException;

    ViewPaperVo getPapersByUid(Integer userId, Integer pageNum) throws ExecutionException, InterruptedException;

    int deletePaperById(Integer paperId, Integer userId, Integer permission);

    PaperVo getPaperByPaperId(Integer paperId, Integer userId) throws ExecutionException, InterruptedException;

    ViewPaperVo getPapersByAuthorId(Integer authorId, Integer pageNum) throws ExecutionException, InterruptedException;

    ViewPaperVo getPapersByFieldId(Integer fieldId, Integer pageNum) throws ExecutionException, InterruptedException;

    int updatePaper(PaperFrontVo vo, Integer userId, Integer permission) throws ExecutionException, InterruptedException;

    int collectPaper(CollectVo vo, Integer userId);

    int uncollect(CollectVo vo, Integer userId);

    ViewPaperVo getCollectionByUid(Integer uid, Integer pageNum) throws ExecutionException, InterruptedException;

    HotVo getHotPaper() throws ExecutionException, InterruptedException;

    VisualData getVisualizationData(Integer uid);

    ViewPaperVo getPaperList(Integer pageNum) throws ExecutionException, InterruptedException;

    VisualData getAllVisualizationData();

    ViewPaperVo getPaperAll() throws ExecutionException, InterruptedException;

    List<PaperVo> getPaperByIds(List<Integer> ids) throws ExecutionException, InterruptedException;
}
